package com.woniu.sharepark.leasesystem.lessor.dao;

import com.woniu.sharepark.leasesystem.lessor.pojo.CarPark;
import org.springframework.stereotype.Repository;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * 车位信息数据访问层接口
 * @author xin
 * @date 2019/6/1 12:22
 */
@Repository
public interface CarParkDAO {
    /**
    * 通过主键删除车位信息
    * @title deleteByPrimaryKey
    * @param id 主键id
    * @return: int
    * @author xin
    * @date 2019/6/1 12:22
    */
    int deleteByPrimaryKey(Integer id);

    /**
    * 插入车位信息
    * @title insert
    * @param record 车位信息
    * @return: int
    * @author xin
    * @date 2019/6/1 12:22
    */
    int insert(CarPark record);

    /**
    * 动态插入车位信息
    * @title insertSelective
    * @param record 车位信息
    * @return: int
    * @author xin
    * @date 2019/6/1 12:22
    */
    int insertSelective(CarPark record);

    /**
    * 通过主键查询车位信息
    * @title selectByPrimaryKey
    * @param id 主键id
    * @return: com.woniu.sharepark.leasesystem.lessor.pojo.CarPark
    * @author xin
    * @date 2019/6/1 12:22
    */
    CarPark selectByPrimaryKey(Integer id);

    /**
    * 通过主键动态修改车位信息
    * @title updateByPrimaryKeySelective
    * @param record 车位信息
    * @return: int
    * @author xin
    * @date 2019/6/1 12:23
    */
    int updateByPrimaryKeySelective(CarPark record);

    /**
    * 通过主键修改车位信息
    * @title updateByPrimaryKey
    * @param record 车位信息
    * @return: int
    * @author xin
    * @date 2019/6/1 12:23
    */
    int updateByPrimaryKey(CarPark record);


    /**
    * 分页动态查询车位信息
    * @title selectAllCarParkPage
    * @param currentPage 当前页
    * @param pageSize 每页数据
    * @param carPark 车位信息
    * @return: java.util.List<com.woniu.sharepark.leasesystem.lessor.pojo.CarPark>
    * @author xin
    * @date 2019/6/4 16:34
    */
    List<CarPark> selectAllCarParkPage(@Param("currentPage") Integer currentPage,@Param("pageSize") Integer pageSize, @Param("carPark") CarPark carPark);


    /**
    * 根据车位上传信息添加车位
    *
    * @param valuesString 此Values的值对应与SQL语句中的Values的值，是JAVA处理过后的需要添加的值的总字符串
    * @return void
    * @Author Zongjie.Li
    * @Date 2019/6/5
    */
    void insertByCarParkDTO(@Param(value = "valuesString") String valuesString);

    /**
    * 此方法用来查询小区内的所有车位
    *
    * @param communityID 此参数为查找小区的小区ID
    * @return java.util.Set<java.lang.Integer>
    * @Author Zongjie.Li
    * @Date 2019/6/5
    */
    Set<Integer> selectCarParkNumberByCommunityID(@Param(value = "com_id") Integer communityID);


    /**
    * 动态查询车位
    * @title findCarParkByComId
    * @param carPark
    * @return: java.util.List<com.woniu.sharepark.leasesystem.lessor.pojo.CarPark>
    * @author xin
    * @date 2019/6/6 11:21
    */
    List<CarPark> selectCarParkSelective(CarPark carPark);


    /**
    *@Description: 批量审核车位信息
    *@Param: 车位主键
    *@return: 影响行数
    *@Author: zy
    *@date: 2019/6/10
    */

    /**
     * 物业方审核车位信息
     * @param ids
     * @return
     */
    int updateStatusByIds(Integer[] ids);

    /**
     *平台方审核车位信息
     * @param id
     * @return
     */
    int updateStatusById(Integer id);

    /**
    * 修改车位状态
    * @title updateStatus
    * @param carparkStatus
    * @param id
    * @return void
    * @author DELL
    * @date 2019/6/11 11:53
    **/
    void updateStatus(@Param("carparkStates") String carparkStatus, @Param("id") Integer id);


    /**
     * 统计车位总数
     * @title selectAllCount
     * @return int
     * @author xin
     * @date 2019/6/17 16:37
     */
    int selectAllCount();

    /**
     * 根据UID查找此ID对应车位
     *
     * @param Uid Param Description
     * @return java.util.List<com.woniu.sharepark.leasesystem.lessor.pojo.CarPark>
     * @Author Zongjie.Li
     * @Date 2019/6/20
     * @Version 1.0
     */
    List<CarPark> selectCarParkByUid (Integer Uid);

    /**
     * 获取当前用户昨日收益
     *
     * @param Uid 当前用户ID
     * @return java.lang.Integer
     * @Author Zongjie.Li
     * @Date 2019/6/20
     * @Version 1.0
     */
    Integer getIncomeYesterday(Integer Uid);



}